package com.ruoyi.system.service.impl;

import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.QQSMSUtils;
import com.ruoyi.system.domain.TalCirculateTalent;
import com.ruoyi.system.domain.TalTalentInfo;
import com.ruoyi.system.service.ITalCirculateTalentService;
import com.ruoyi.system.service.ITalTalentInfoService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.TalTalentCirculateMapper;
import com.ruoyi.system.domain.TalTalentCirculate;
import com.ruoyi.system.service.ITalTalentCirculateService;
import org.springframework.util.CollectionUtils;

/**
 * 人才流动管理Service业务层处理
 *
 * @author zhusq
 * @date 2023-04-04
 */
@Slf4j
@Service
public class TalTalentCirculateServiceImpl extends ServiceImpl<TalTalentCirculateMapper,TalTalentCirculate> implements ITalTalentCirculateService
{
    @Autowired
    private TalTalentCirculateMapper talTalentCirculateMapper;

    @Autowired
    private ITalCirculateTalentService circulateTalentService ;

    @Autowired
    private ITalTalentInfoService talTalentInfoService;

    /**
     * 查询人才流动管理
     *
     * @param id 人才流动管理主键
     * @return 人才流动管理
     */
    @Override
    public TalTalentCirculate selectTalTalentCirculateById(Long id)
    {
        return talTalentCirculateMapper.selectTalTalentCirculateById(id);
    }

    /**
     * 查询人才流动管理列表
     *
     * @param talTalentCirculate 人才流动管理
     * @return 人才流动管理
     */
    @Override
    public List<TalTalentCirculate> selectTalTalentCirculateList(TalTalentCirculate talTalentCirculate)
    {
        return talTalentCirculateMapper.selectTalTalentCirculateList(talTalentCirculate);
    }

    /**
     * 新增人才流动管理
     *
     * @param circulate 人才流动管理
     * @return 结果
     */
    @Override
    public int insertTalTalentCirculate(TalTalentCirculate circulate)
    {
        circulate.setCreateTime(DateUtils.getNowDate());
        int resultNumber = talTalentCirculateMapper.insertTalTalentCirculate(circulate);
        if (resultNumber == 0) {
            throw new ServiceException("通知失败,请联系管理员!") ;
        }
        String content = circulate.getContent();
        String title = circulate.getTitle();
        if (CollectionUtils.isEmpty(circulate.getUserList())) {
            throw new ServiceException("选择通知的党员不能为空!") ;
        }
        for (Long talentId : circulate.getUserList()) {
            TalCirculateTalent talent = new TalCirculateTalent();
            talent.setCirculateId(circulate.getId());
            talent.setTalentId(talentId);
            talent.setCreateTime(new Date());
            try {
                circulateTalentService.insertTalCirculateTalent(talent) ;
                TalTalentInfo one = this.talTalentInfoService.getById(talentId);
                String email = one.getEmail();
                QQSMSUtils.noticeTalentEmail(email,title,content);
            }catch (Exception e){
                log.info(e.getMessage());
            }
        }
        return resultNumber;
    }

    /**
     * 修改人才流动管理
     *
     * @param talTalentCirculate 人才流动管理
     * @return 结果
     */
    @Override
    public int updateTalTalentCirculate(TalTalentCirculate talTalentCirculate)
    {
        talTalentCirculate.setUpdateTime(DateUtils.getNowDate());
        return talTalentCirculateMapper.updateTalTalentCirculate(talTalentCirculate);
    }

    /**
     * 批量删除人才流动管理
     *
     * @param ids 需要删除的人才流动管理主键
     * @return 结果
     */
    @Override
    public int deleteTalTalentCirculateByIds(Long[] ids)
    {
        return talTalentCirculateMapper.deleteTalTalentCirculateByIds(ids);
    }

    /**
     * 删除人才流动管理信息
     *
     * @param id 人才流动管理主键
     * @return 结果
     */
    @Override
    public int deleteTalTalentCirculateById(Long id)
    {
        return talTalentCirculateMapper.deleteTalTalentCirculateById(id);
    }
}
